<?php namespace Home\Controller; 


/**
 * 会员中心控制器
 * 田昭鹏
 */

class MemberController extends CommonController{
	//构造函数
	public function __init(){
        // 继承父级构造函数
        parent::__init();
	}
	
    // 页面————————————————————————————————————————————————————————————————————————————————————————————————————
    //动作  主页面
    public function index(){
        // p($_SESSION);
        // 查询用户数据
        $user=current(Db::table('huser')->where('username',$_SESSION['hname'])->get());
        // p($user);
        View::with('user',$user);

        // 显示进行中订单
        $num=Db::table('orders')->where('huser_hid',$user['hid'])->orderBy('time','DESC')->whereIn('status',array('待发货','已发货'))->count();
        View::with('num',$num);

       	View::make();
    }


    // 订单页面
    public function dingdan(){
        // 获得选择的订单状态
        $dg=$this->orderStatus();
        // p($dg);
        
        // 调取订单信息
        // 获得对应的用户id
        $hname=$_SESSION['hname'];
        $hid=Db::table('huser')->where('username',$hname)->pluck('hid');
        // var_dump($hid);
        
        // 统计  订单数量
        $orderNum=$this->countNum($hid);
        // p($orderNum);
        View::with('orderNum',$orderNum);

        // 查询订单
        $orderData=$this->selectOrder($dg,$hid);
        // p($orderData);
        View::with('orderData',$orderData);
        
        View::make();
    }

    // 退货页面页面
    public function tui(){
        View::make();
    }

    // 账户记录页面
    public function record(){
        View::make();
    }
    // 收货地址页面
    public function address(){
        // 获得用户地址信息
        $hid=Db::table('huser')->where('username',$_SESSION['hname'])->pluck('hid');
        $address=Db::table('address')->where('huser_hid',$hid)->orderBy('is_def','ASC')->get();
        // p($address);
        View::with('address',$address);

        View::make();
    }

    // 账户安全页面
    public function safe(){

        View::make();
    }

    // 我的资料页面
    public function ziliao(){
        // p($_SESSION);
        // 实例化用户表模型
        $user=new \Common\Model\Huser;
        // 调取用户信息
        $userData=$user->where('username',$_SESSION['hname'])->find();
        // 组数组
        $userData['address']=explode('|', $userData['address']);
        // 分配数据
        View::with('userData',$userData);
        // p($userData);


        View::make();
    }


// 异步——————————————————————————————————————————————————————————————————————————————————————————————————————



    // 用户信息异步
    public function ajaxUser(){
        // 实例化用户表模型
        $user=new \Common\Model\Huser;
        if(IS_AJAX){
            // 跳转模型
            $data=$user->edit();
        }
        // p($data);
        View::ajax($data);
        
    }

    // 异步  确认订单方法
    public function orderConfirm(){
        if(!IS_AJAX) return FALSE;
        $oid=Q('post.oid',0,'intval');
        // 声明空数组
        $temp=array('oid'=>$oid,'status'=>'已完成');
        // p($temp);die;
        // 实例化表订单
        $order=new \Common\Model\Orders;
        // 修改数据库
        $result=$order->save($temp);
        
    }
    // 异步  取消订单方法
    public function orderOut(){
        if(!IS_AJAX) return FALSE;
        $oid=Q('post.oid',0,'intval');
        // 声明空数组
        $temp=array('oid'=>$oid,'status'=>'无效');
        // p($temp);die;
        // 实例化表订单
        $order=new \Common\Model\Orders;
        // 修改数据库
        $result=$order->save($temp);
        
    }
    // 异步  删除订单方法
    public function orderDel(){
        if(!IS_AJAX) return FALSE;
        $oid=Q('post.oid',0,'intval');
        // 实例化表订单
        $order=new \Common\Model\Orders;
        // 修改数据库  删除订单表
        $result=$order->delete($oid);
        // 删除订单列表
        $order=new \Common\Model\OrdersList;
        $result=$order->where('order_oid',$oid)->delete();
    }

    // 异步  去付款
    public function ajaxFk(){
        if(!IS_AJAX) return FALSE;
        $onumber=current(Q('post.'));
        $_SESSION['onumber']=$onumber;
    }

    // 异步去购买
    public function ajaxGm(){
        if(!IS_AJAX) return FALSE;
        $goodsData=current(Q('post.'));
        // p($goodsData);
        foreach ($goodsData as $k => $v) {
            // 声明空数组
            $data=array();
            // 获得商品id   防止js修改价格
            $gid=$goodsData[$k]['id'];
            // 声明空数组  获取商品id字段
            $data['id']=$gid;
            $data['num']=$goodsData[$k]['num'];
            $goodsData['options']=explode('|', $goodsData[$k]['options']);
            // 获取商品  获取商品名字段
            $goods=current(Db::table('goods')->where('gid',$gid)->get());
            $data['name']=$goods['gname'];
            $data['price']=$goods['sprice'];
            $data['pic']=$goods['pic'];
            $data['combine']=$goodsData[$k]['options'];
            // 获取附加价格
            foreach ($goodsData['options'] as $k => $v) {
                // 添加附加价格
                $data['price']= $data['price']+Db::table('goods_attr')->where('gaid',$v)->pluck('addprice');
                // 组成颜色  尺码
                $data['options'][$v]=Db::table('goods_attr')->where('gaid',$v)->pluck('gavalue');
            }
            // 存入session
            Cart::add($data);
        }
    }


    // 异步 默认地址
    public function ajaxMo(){
        if(!IS_AJAX) return FALSE;
        // p(Q('post.'));
        // 获得用户id
        $hid=Db::table('huser')->where('username',$_SESSION['hname'])->pluck('hid');
        // 先初始化默认地址
        $result=Db::table('address')->where('huser_hid',$hid)->update(array('is_def'=>0));
        if(!$result){
            $data=array('status'=>FALSE,'message'=>'初始化失败！');
        }
        // 设置默认地址
        $result=Db::table('address')->where('adid',Q('post.adid'))->update(array('is_def'=>1));
        if(!$result){
            $data=array('status'=>FALSE,'message'=>'设置失败');
        }else{
            $data=array('status'=>TRUE,'message'=>'设置成功');
        }
        // 返回值
        View::ajax($data);
    }

    // 添加地址
    public function ajaxAddress(){
        // 实例化模型
        $address=new \Common\Model\Address;
        // 跳转
        if(IS_AJAX){
            // 模型
            $adid=$address->store();
            // 赋值
            $_POST['adid']=$adid;
            // 判断压入数值
            
        }
        View::ajax($_POST);
    }

    // 删除地址异步
    public function ajaxAddDel(){
        // 实例化模型
        $address=new \Common\Model\Address;
        // 跳转
        if(!IS_AJAX) return FALSE;
        // p($_POST);
        $result=$address->where('adid',Q('post.adid'))->delete();
        if(!$result){
            $data=array('status'=>false,'message'=>'删除失败');
        }else{
            $data=array('status'=>true,'message'=>'删除成功');
        }
        View::ajax($data);
    }
    

    // 编辑地址异步  拉取数据
    public function ajaxEdit(){
        // p($_POST);
        if(!IS_AJAX) return FALSE;
        $adid=Q('post.adid',0,'intval');
        // 拉取数据
        $data=current(Db::table('address')->where('adid',$adid)->get());
        // 重组数组
        $data['district']=explode(' ', $data['district']);
        // p($data);
        View::ajax($data);
    }

    // 编辑地址异步  提交修改后的数据
    public function ajaxTj(){
        if(!IS_AJAX) return FALSE;
        // p($_POST);
        // 重组数组
        foreach ($_POST as $k => $v) {
            if(is_array($v)){
                $_POST[$k]=implode(' ', $v);
            }
        }
        // p($_POST);die;
        // 实例化表
        $address=new \Common\Model\Address;
        // 添加进数据库
        $address->save($_POST);
        // 返回数组
        View::ajax($_POST);
    }

    // 修改密码  异步
    public function ajaxPass(){
        // p($_POST);
        if(!IS_AJAX) return FALSE;
        // 实例化模型
        $user=new \Common\Model\Huser;
        // 进模型验证
        $result=$user->changePass();
        if(!$result){
            $data=array('status'=>false,'message'=>$user->getError());
        }else{
            $data=array('status'=>true,'message'=>'修改成功');
        }
        View::ajax($data);
    }




// 方法————————————————————————————————————————————————————————————————————————————————————————————————
    // 判断选择的订单状态
    private function orderStatus(){
        // p(Q('get.dg'));
        $num=Q('get.dg',0,'intval');
        // 接收get参数
        switch ($num) {
            case 0:
                $dg=array('未付款','待发货','已发货','已完成','无效');
                break;
            case 1:
                $dg=array('未付款');
                break;
            case 2:
                $dg=array('待发货','已发货');
                break;
            case 3:
                $dg=array('已完成');
                break;
            case 4:
                $dg=array('无效');
                break;
            default:
                $dg=array('未付款','待发货','已发货','已完成','无效');
        }
        return $dg;
    }

    // 统计订单方法
    private function countNum($hid){
        $orderNum=array();
        $orderNum[]['全部订单']=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->count();
        $orderNum[]['未付款']=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->whereIn('status',array('未付款'))->count();
        $orderNum[]['进行中']=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->whereIn('status',array('待发货','已发货'))->count();
        $orderNum[]['已完成']=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->whereIn('status',array('已完成'))->count();
        $orderNum[]['无效']=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->whereIn('status',array('无效'))->count();
        return $orderNum;
    }

    // 查询订单方法
    private function selectOrder($dg,$hid){
        // 查询订单
        $orderData=Db::table('orders')->where('huser_hid',$hid)->orderBy('time','DESC')->whereIn('status',$dg)->get();

        // 组成订单列表信息
        foreach ($orderData as $k => $v) {
            // 地址
            $orderData[$k]['address']=current(Db::table('address')->where('adid',$v['address_adid'])->get());
            // 订单列表
            $orderData[$k]['list']=Db::table('order_list')->where('order_oid',$v['oid'])->get();
            foreach ($orderData[$k]['list'] as $kk => $vv) {
                // 商品信息
                $orderData[$k]['list'][$kk]['goods']=current(Db::table('goods')->where('gid',$vv['goods_gid'])->get());
                // 货品信息
                $orderData[$k]['list'][$kk]['combine']=explode('|', $vv['ocombine']);
                foreach ($orderData[$k]['list'][$kk]['combine'] as $kkk => $vvv) {
                    $orderData[$k]['list'][$kk]['combine'][$kkk]=Db::table('goods_attr')->where('gaid',$vvv)->pluck('gavalue');
                }
                $orderData[$k]['list'][$kk]['combine']=implode(' ', $orderData[$k]['list'][$kk]['combine']);
            }
        }
        return $orderData;
    }


    // 验证码方法
    public function code(){
        Code::num(1)->make();
    }

    
}
